vlabwikiaorg_ru-20200214-history
Двоичная система счисления
Двоичная система счисления — это позиционная система счисления с целочисленным основанием 2. В этой системе счисления числа записываются с помощью двух символов (в роли которых обычно выступают цифры 0 и 1). Двоичная система счисления — это позиционная система счисления с целочисленным основанием 2. В этой системе счисления числа записываются с помощью двух символов (в роли которых обычно выступают цифры 0 и 1). История Полный набор из 8 триграмм и 64 гексаграмм, аналог 3-битных и 4-битных цифр, был известен в древнем Китае в классических текстах книги Перемен. Порядок гексаграмм в книге Перемен, расположенных в соответствии со значениями соответствующих двоичных цифр (от 0 до 63), и метод их получения был разработан китайским учёным и философом Шао Юн в XI веке. Однако нет доказательств, свидетельствующих о том, что Шао Юн понимал правила двоичной арифметики, располагая двухсимвольные кортежи в лексикографическом порядке. Индийский математик Пингала (200 год до н. э.) разработал математические основы для описания поэзии с использованием первого известного применения двоичной системы счисления. W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X Наборы, представляющие собой комбинации двоичных цифр, использовались африканцами в традиционных гаданиях (таких как Ифа) наряду со средневековой геомантией. В 1605 году Френсис Бэкон описал систему, буквы алфавита которой могут быть сведены к последовательностям двоичных цифр, которые в свою очередь могут быть закодированы как едва заметные изменения шрифта в любых случайных текстах. Важным шагом в становлении общей теории двоичного кодирования является замечание о том, что указанный метод может быть использован применительно к любым объектам. (См. Шифр Бэкона) Современная двоичная система была полностью описана Лейбницом в XVII веке в работе Explication de l’Arithmétique Binaire''http://www.leibniz-translations.com/binary.htm Leibniz Translation.com EXPLANATION OF BINARY ARITHMETIC. В системе счисления Лейбница были использованы цифры 0 и 1, как и в современной двоичной системе. Как человек, увлекающийся китайской культурой, Лейбниц знал о книге Перемен и заметил, что гексаграммы соответствуют двоичным числам от 0 до 111111. Он восхищался тем, что это отображение является свидетельством крупных китайских достижений в философской математике того времени. В 1854 английский математик Джордж Буль опубликовал знаковую работу, описывающую алгебраические системы применительно к логике, которая в настоящее время известна как Булева алгебра или алгебра логики. Его логическому исчислению было суждено сыграть важную роль в разработке современных цифровых электронных схем. В 1937 Клод Шеннон предствил к защите кандидатскую диссертацию ''Символический анализ релейных и переключательных схем в MIT, в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника. В ноябре 1937 Джордж Штибиц, впоследствии работавший в Bell Labs, создал на базе реле компьютер «Model K» (от англ. «'K'''itchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940, умел выполнять операции с комплексными числами. Во время демонстрации на конференции American Mathematical Society в Дармутском колледже 11 сентября 1940 Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа. Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман, Джон Мокли и Норберт Винер, впоследствии писавшие об этом в своих мемуарах. Таблицы умножения и сложения двоичных чисел соответствует булевой функции '''f(2,1,8)10', соответствует булевой функции f(2,2,134)10. Преобразование чисел Для преобразования из двоичной системы в десятичную используют следующую таблицу степеней основания 2: Начиная с цифры 1 все цифры умножаются на два. Точка, которая стоит после 1 называется двоичной точкой. Преобразование двоичных чисел в десятичные Допустим, вам дано двоичное число 110001. Для перевода в десятичное просто запишите его справа налево как сумму по разрядам следующим образом: 1\times 2^0 + 0\times 2^1 + 0\times 2^2 + 0\times 2^3 + 1\times 2^4 + 1\times 2^5 = 1\times 1 + 0\times 2 + 0\times 4 + 0\times 8 + 1\times 16 + 1\times 32= 49 . Можно записать это в виде таблицы следующим образом: Точно так же, начиная с двоичной точки, двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа. Таким образом, двоичное число 110001 равнозначно десятичному 49. Преобразование методом Горнера Для того, что бы преобразовывать числа из двоичной в десятичную систему данным методом, надо суммировать цифры слева-направо, умножая ранее полученный результат на основу системы (в данном случае 2). Например, двоичное число 1011011 переводится в десятичную систему так: 0*2+'1'=1 >> 1*2+'0'=2 >> 2*2+'1'=5 >> 5*2+'1'=11 >> 11*2+'0'=22 >> 22*2+'1'=45 >> 45*2+'1'=91 То есть в десятичной системе это число будет записано как 91. Или число 101111 переводится в десятичную систему так: 0*2+'1'=1 >> 1*2+'0'=2 >> 2*2+'1'=5 >> 5*2+'1'=11 >> 11*2+'1'=23 >> 23*2+'1'=47 То есть в десятичной системе это число будет записано как 47. Преобразование десятичных чисел к ближайшей степени двойки, не меньшей этого числа Ниже приведена функция, возвращающая число, не меньшее аргумента, и являющееся степенью двух. unsigned int to_deg_2(unsigned int number) { --number; for(int i = 1; i < sizeof(unsigned int) * 8; i *= 2) { number |= (number >> i); } return number + 1; } Преобразование десятичных чисел в двоичные Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой : 19 /2 = 9 с остатком 1 9 /2 = 4 c остатком 1 4 /2 = 2 с остатком 0 2 /2 = 1 с остатком 0 1 /2 = 0 с остатком 1 Итак, мы делим каждое частное на 2 и записываем в остаток 1 или 0. Продолжать деление надо пока в делимом не будет 1. Ставим числа из остатка друг за другом, начиная с конца. В результате получаем число 19 в двоичной записи (начиная с конца): 10011. Программная реализация перевода (Borland Delphi 7): Используется метод деления с остатком. var tek: integer; //Десятичное число function DecToBin:string; var ik:integer; ost: array 1..100 of integer; ed:string; begin ed:=''; for ik:=1 to 100 do ostik:=0; ik:=1; tek:=StrToInt(pr); while tek>0 do begin ostik:= tek mod 2; tek:=tek div 2; ik:=ik+1; end; while ik>0 do begin ed:=ed+intToStr(ostik); ik:=ik-1; end; dectobin:=ed; end; См. также Деление с остатком (деление по модулю) Двоичные показательные позиционные системы счисления с основанием показательной функции не равной 2 Являются целочисленными сдвоенными показательными системами счисления. Целые числа записываются в виде: x_{2,b}=(a_{n-1}a_{n-2}...a_2a_1a_0)_{2,b}=\sum_{k=0}^{n-1}a_k b^k , где: b>2 — основание показательной межразрядной функции. Дробные числа записываются в виде: x_{2,b}=(a_{n-1}a_{n-2}...a_1a_0,a_{-1}a_{-2}...a_{-(m-1)}a_{-m})_{2,b}=\sum_{k=m}^{n-1}a_k b^k , где: m''' — число цифр дробной части числа '''x2,b. Сравнение с другими системами счисления Сравнение различных показательных систем счисления по одному параметру — удельное натуральнологарифмическое число представимых чисел приводится в статье «Число представимых чисел в позиционных системах счисления». Применения В цифровых устройствах Двоичная система используется в цифровых устройствах, поскольку является наиболее простой и соответствует требованиям: * Чем меньше значений существует в системе, тем проще изготовить отдельные элементы, оперирующие этими значениями. В частности, две цифры двоичной системы счисления могут быть легко представлены многими физическими явлениями: есть ток — нет тока, индукция магнитного поля больше пороговой величины или нет и т. д. * Чем меньше количество состояний у элемента, тем выше помехоустойчивость и тем быстрее он может работать. Например, чтобы закодировать три состояния через величину индукции магнитного поля, потребуется ввести два пороговых значения, что не будет способствовать помехоустойчивости и надёжности хранения информации. * Двоичная арифметика является довольно простой. Простыми являются таблицы сложения и умножения — основных действий над числами. В цифровой электронике одному двоичному разряду в двоичной системе счисления соответствует один двоичный разряд двоичного регистра, то есть двоичный триггер с двумя состояниями (0,1). В английской системе мер При указании линейных размеров в дюймах по традиции используют двоичные дроби, а не десятичные, например: 5¾″, 715/16″, 311/32″ и т. д. См. также * Битовые операции * Системы счисления * Бит * Байт * Единицы измерения информации * Двоичные логические элементы * Двоичный триггер * Двоично-десятичный код * Десятичная система счисления * Комбинированные системы счисления * Двоичное кодирование Примечания Ссылки * Учебное пособие «Арифметические основы ЭВМ и систем». Часть 1. Системы счисления * Википедия. Двоичная система счисления Категория:Системы счисления *